package com.jymj.service;

import com.jymj.entity.KeyValueEntity;
import com.jymj.entity.gantt.GanttLinkEntity;
import com.jymj.entity.gantt.PjTaskDetEntity;
import com.jymj.entity.gantt.PjTaskEntity;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * Created by dl on 2017/7/26.
 */
public interface PjTaskService {

    PjTaskEntity queryObject(Integer taskId);

    PjTaskEntity queryObject1(String code, Integer taskid);

    int queryTotal(Map<String, Object> map);

    void save(PjTaskEntity task);

    void update(PjTaskEntity task);

    void updateExProgress(PjTaskEntity task);

    void updateById(PjTaskEntity task);

    void deleteBatch(Long[] taskIds);

    List<PjTaskEntity> queryListByProj(String code);

    List<GanttLinkEntity> getLinkList(String code);

    List<PjTaskEntity> queryChildTasks(String code, int fatherId);

    void updateProgress(PjTaskEntity task, PjTaskDetEntity det);

    List<GanttLinkEntity> queryLinks(Map<String, Object> map);

    List<PjTaskEntity> queryListWithLinkByProj(int projId);

    Map<Integer, PjTaskEntity> queryMapWithLinkByProj(int projId);

    void saveLink(GanttLinkEntity ganttLink);

    void updateLink(GanttLinkEntity ganttLink);

    void delLink(GanttLinkEntity ganttLink);

    //计算两个任务时间间隔 by DL 2017-10-17
    int queryDelay(GanttLinkEntity ganttLink);

    void updateNextTask(int pid, PjTaskEntity source);

    List<PjTaskEntity> queryContractList(String code);

    Map<String, Object> queryDateRange(String code);

    Map queryCostByMonth(String value);

    List<GanttLinkEntity> getPreTasks(Map<String, Object> map);

    List<PjTaskEntity> queryFatherTask(String code);

//    List<Map<String, Object>> queryCzByYear(Integer pjid);
//
//    List<Map<String, Object>> queryCzByQuarter(Integer pjid);
//
//  List<Map<String, Object>> queryCzByMonth(Integer pjid);
    List<KeyValueEntity> queryCzByYear(String code);

    Map<String, Object> queryCzByQuarter(String code);

    List<KeyValueEntity> queryCzByMonth(String code);

    void updateLinks(PjTaskEntity task, List<GanttLinkEntity> linkEntityList);

    void UpdateFatherCost(PjTaskEntity task);

    List<PjTaskEntity> queryChildbyPid(String code);

    List<PjTaskEntity> queryAllTask();

    PjTaskEntity queryObjectByChildName(String code, Integer type);

    /**
     * 修改task进度 根据chaid子工程进度
     *
     * @param code
     * @param type
     * @param progress
     */
    void updateTaskProgress(String code, Integer type, BigDecimal progress);

    List<PjTaskEntity> queryChildList(Integer id);

    void delete(Integer id);
}
